﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using DataAnnotationsExtensions;

namespace Vcare.Models
{
  public class Members
  {
    public int MembersID { get; set; }

    [Display(Name = "Contact Date")]
    public DateTime ContactDate { get; set; }

    [Required]
    [Digits]
    public string Phone { get; set; }

    public string Title { get; set; }

    [Display(Name="First name")]
    public string Firstname { get; set; }

    [Required]
    [Display(Name="Last name")]
    public string Lastname { get; set; }

    [Required]
    [Display(Name = "House Number or Name")]
    public string housenumber { get; set; }

    [Required]
    public string Address { get; set; }

    [Required]
    public string Town { get; set; }

    public string County { get; set; }

    [Required]
    [StringLength(8, ErrorMessage = "Postcode can not be longer than 8 characters and digits.")]
    public string Postcode { get; set; }

    public string Email { get; set; }

    public string MembershipID { get; set; }

    [Display(Name="Account Number")]
    [StringLength(8, ErrorMessage = "Account Number 8 digits only")]
    public string AccountNo { get; set; }

    [Display(Name = "Sort code")]
    [StringLength(6, ErrorMessage = "Sortcode Number 8 digits only")]
    public string Sortcode { get; set; }

    [Display(Name="Account Name")]
    public string AccountName { get; set; }

    [Display(Name = "Card holders name")]
    public string CardHoldersName { get; set; }

    [Display(Name = "Card number")]
    [StringLength(16, ErrorMessage = "Card numbers must be 16 digits.")]
    [CreditCard]
    public string CardNumber { get; set; }

    [Display(Name = "CVC number")]
    public string CVCNumber { get; set; }

    [Display(Name = "Expiry date")]
    [StringLength(4, ErrorMessage = "MMYY only")]
    public string ExpiryDate { get; set; }

    [Display(Name = "Payment type")]
    public string PaymentType { get; set; }

    [Required]
    [Display(Name = "Price plan")]
    public string PricePlan { get; set; }

    [Display(Name = "Value of single payment")]
    public decimal ValueOfSinglePayment { get; set; }

    [Display(Name = "Payment option")]
    public string PaymentOption { get; set; }

    [Display(Name = "Multiroom ?")]
    public bool Multiroom { get; set; }

    [Display(Name = "Comments on box type")]
    public string CommentsOnBoxType { get; set; }

    public DateTime? DateOfPayment { get; set; }

    public int? CallCentreID { get; set; }

    public bool? PlusMember { get; set; }

    public int? CompanyID { get; set; }

    [Display(Name = "Quality Checked")]
    public bool? QAd { get; set; }

    public bool? Paid { get; set; }

    [Digits]
    [StringLength(4, ErrorMessage = "MMYY only")]
    public string StartDate { get; set; }

    [StringLength(10, ErrorMessage = "Up to 10 digits only.")]
    public string IssueNumber { get; set; }

    public string CardType { get; set; }

    public DateTime? DateUpdated { get; set; }

    public bool? Processed { get; set; }

    public virtual CallCentres CallCentre { get; set; }
  }
}